#include <stdio.h> требуется только для объявления функций. long lseek (stream, offset, origin); int handle; handle, ссылающийся на открытый файл long offset; число байтов из origin. int оrigin; начальная позиция.
Описание.
Функция lseek передвигает указатель на файл (если он есть), связанный с handle , на новое место расположения, которое является байтами offset из origin .
Следующая операция в файле выполняется на новом месте расположения.
Аргумент origin может быть одной из следующих констант, определенных в <stdio.h>.
ORIGIN ОПРЕДЕЛЕНИЕ
SEEK-SET начало файла.
SEEK-CUR текущая позиция указателя на файл.
SEEK-END конец файла.
Функция lseek используется для перемещения указателя в любое место файла. Указатель должен быть размещен вне конца файла. Однако попытка расположить указатель на файл в начале файла обычно приводит к ошибке.
Возвращаемое значение.
Функция lseek возвращает разветвление origin в байтах, оп ределенное как значение от новой позиции до начала файла. Возвращаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений:
ВЕЛИЧИНА ЕЕ СМЫСЛОВОЕ ЗНАЧЕНИЕ
EBADF Неверный handle-р файла.
ENIVAL Неверное значение для origin или
позиция, определенная при помощи
offset, находится перед началом
файла.
Для устройств, не приспособленных для поиска (seek ), (таких как терминал и печать), возвращаемое значение неопределенно.
Пример:
#include <io.h>
#include <fcntl.h>
#include <stdlib.h>
int fh;
long position;
fh = open("data", O_RDONLY);
.
.
.
/* 0 - разветвление от начала */
position = lseek (fh, 0L, SEEK_SET);
if (position == -1L)
perror("lseek to beginning failed");
.
.
.
/* находит текущую позицию */
position = lseek (fh, 0L, SEEK_CUR);
if (position == -1L)
perror("lseek to current position failed");
.
.
.
/* выполняет до конца файла */
if (position == -1L)
perror("lseek to end failed");.